#include "head.h"

// 菜单信息 - 登陆用
const wchar_t *title = L"初始界面";
const wchar_t *option_1[] = {L"登录", L"注册", L"返回"};

// 菜单信息 - 管理员用
const wchar_t *title_root = L"用户菜单";
const wchar_t *option_root[] = {
    L"设定航班",
    L"修改航班",
    L"修改普通用户",
    L"增减超级用户",
    L"返回"};

// 菜单信息 - 普通用户用
const wchar_t *title_user = L"用户菜单";
const wchar_t *option_user[] = {
    L"购票退票改签",
    L"余额充值",
    L"查看航班",
    L"修改密码",
    L"我的订单",
    L"返回"};


// 系统初始化
FlightSystem Sys_init(void)
{
    FlightSystem Flight_sys;
    Flight_sys.Flight_list = D_List_init();   // 航班信息
    Flight_sys.ADMIN_USER = S_List_init();    // 管理员账户信息
    Flight_sys.REGULAR_USER = S_List_init();  // 普通用户信息
    Flight_sys.SILVER_USER = S_List_init();   // 银卡会员信息 (9折)
    Flight_sys.GOLD_USER = S_List_init();     // 金卡会员信息 (8折)
    Flight_sys.PLATINUM_USER = S_List_init(); // 白金会员信息 (7折)

    // 从文件中导入数据
    D_List_file_scanf(Flight_sys.Flight_list);                  // 航班信息
    S_List_File_scanf(Flight_sys.ADMIN_USER, ADMIN_FILE);       // 管理员账户信息文件
    S_List_File_scanf(Flight_sys.REGULAR_USER, REGULAR_FILE);   // 普通用户信息文件
    S_List_File_scanf(Flight_sys.SILVER_USER, SILVER_FILE);     // 银卡会员信息文件 (9折)
    S_List_File_scanf(Flight_sys.GOLD_USER, GOLD_FILE);         // 金卡会员信息文件 (8折)
    S_List_File_scanf(Flight_sys.PLATINUM_USER, PLATINUM_FILE); // 白金会员信息文件 (7折)

    system("clear");
    return Flight_sys;
}

// 系统登录
U_data Sys_log_in(FlightSystem Flight_sys)
{
    while (1)
    {
        // 用户信息合表
        U_list *list = S_List_init();
        list = S_List_merge(list, Flight_sys.ADMIN_USER);    // 管理员账户信息文件
        list = S_List_merge(list, Flight_sys.REGULAR_USER);  // 普通用户信息文件
        list = S_List_merge(list, Flight_sys.SILVER_USER);   // 银卡会员信息文件 (9折)
        list = S_List_merge(list, Flight_sys.GOLD_USER);     // 金卡会员信息文件 (8折)
        list = S_List_merge(list, Flight_sys.PLATINUM_USER); // 白金会员信息文件 (7折)
        int K = 0;
        U_data log_data;
        K = display_menu(title, option_1, 3);
        switch (K)
        {
        case 1:
            // 开始登录
            log_data = Log_in(list);
            return log_data;
        case 2:
            // 开始注册
            reg(&Flight_sys , list);
            break;
        case 3:
            exit(-1); ;
        default:
            break;
        }
    }
    
    
}

// 系统菜单
void Sys_menu(FlightSystem *Flight_list, U_data log_data)
{
    while (1)
    {
        // 分支
        int flag = 0;
        switch (log_data.grade)
        {
        case 1:
            // 管理员功能界面
            printf("欢迎管理员用户登陆\n");
            flag = display_menu(title_root, option_root, 5);
            break;
        default:
            // 普通用户功能界面
            printf("欢迎普通用户登陆\n");
            flag = display_menu(title_user, option_user, 6) + 5;
            break;
        }

        // 菜单选项分支处理
        switch (flag)
        {
        case 1:
            // 管理员 - 设定航班
            Management_Fly(Flight_list->Flight_list);
            break;
        case 2:
            // 管理员 - 修改航班
            alter_Fly(Flight_list->Flight_list);
            break;
        case 3:
            // 管理员 - 修改普通用户
            amend_users(Flight_list);
            break;
        case 4:
            // 管理员 - 更改超级用户
            super_users(Flight_list->ADMIN_USER);
            break;
        case 5:
            return ;
        case 6:
            // 用户 - 购票退票改签
            consumption(Flight_list , log_data);
            break;
        case 7:
            // 用户 - 余额充值
            Balance_recharge(Flight_list , log_data);
            break;
        case 8: 
            // 用户 - 查看航班
            view_flight(Flight_list->Flight_list);
            break;
        case 9:
            // 用户 - 修改密码
            change_user_password(Flight_list , log_data);
            break;
        case 10:
            // 用户 - 我的订单
            MY_order(log_data);
            break;
        case 11:
            return ;
        default:
            break;
        }
    }
}
